The present invention relates to the field of network communications, and more particularly, to recover data lost in transmission between a transmitting node and a receiving node on a communications network.
Bit errors in communication networks can cause the reception of frames with errors. A transmitter is unaware of receive-based errors and moves forward in its queue of data frames. The receiver, unable to recover the data, must drop the frame. Higher layers of the network protocol stack must discover the missing frame and through higher-layer communication, request a retransmission. The efficiency of the network is greatly reduced whenever higher-layer recovery of lost frames is invoked. Some systems employ error correction schemes that allow recovery of data at the receive side and thereby reduce the need for lost packet detection and retransmission. However, such schemes require that some network bandwidth be utilized to support the error correcting code""s overhead.
All communication networks are subject to interference, noise and other sources of bit errors. These bit errors lead to a reduction in overall performance, since they cause data packets to be lost, necessitating the re-transmission of packets. Some packets are transmitted twice, or more, thereby decreasing effective network throughput. In fact, however, a larger network performance decrease results from the mechanisms normally used to discover the lost packets and then request a retransmission of the lost packets. Typically, a lost packet is discovered through a software timeout. In other systems, the lost packet can be discovered by matching sequenced numbers in a series of packets and noting where gaps exist in the sequence. In either case, the retransmission of the packet occurs only when the receiver has discovered the missing packet and has then sent a request to sender to re-queue the packet. The sender (i.e. the transmitting node) must maintain a copy of each packet in system memory until it receives confirmation from the receiving node that each packet has been successfully received. This obviously places a greater burden on the transmitting node""s system memory, and is exacerbated by delays in the acknowledgement of successful or unsuccessful reception of a packet. In environments with very high bit error rates, even improved systems begin to exhibit degraded performance.
There is a need for a packet error detection and recovery mechanism that operates at a lower layer in the network protocol stack that reduces the time required to recover from packets lost due to bit errors.
These and other needs are met by embodiments of the present invention which provide a method of recovering data transmitted over a medium of a network from a transmitting node to a receiving node. The method includes examining destination address information of a data packet received at the receiving node to determine whether the data packet was uniquely addressed to that receiving node. A conforming data packet has destination address information and a data payload. It is then determined at the receiving node whether the data payload of the data packet has an error, when the destination address information indicates that the data packet was uniquely addressed to that receiving node. At that point, either the data packet is accepted when the data payload does not have an error, or a negative acknowledgement is immediately sent to the transmitting node when the data payload has an error.
By providing a negative acknowledgement at the medium access layer, in accordance with certain embodiments of the invention, the overhead cost of the network is minimized and the time required to recover from packets due to lost errors is reduced. Performance of the network is thereby improved. The negative acknowledgement, in certain embodiments, occurs only when needed, so that when bit error rates are low, network efficiency remains high.
The earlier stated needs are also met by other embodiments of the invention which provide a system for transmitting and receiving data packets over a communication network between a transmitting node and a receiving node. The system comprises a transmitting node that transmits data packets, each conforming data packet containing destination address information and a data payload. The system also comprises a receiving node that receives the data packets. The receiving node includes logic for determining whether a received data packet is uniquely addressed to that receiving node and determining whether the data payload contains an error. The logic immediately sends a negative acknowledgement when the received data packet is uniquely addressed to that receiving node and the data payload contains an error.
Although the present invention has been described and illustrated in detail, it is to be clearly understood that the same is by way of illustration and example only and is not to be taken by limitation, the scope of the present invention being limited only by the terms of the appended claims.